Programmation Client II¶

La programmation orienté objet¶

Objectif: caché les données¶

Objects hide their data behind abstractions and expose functions that operate on that data. Data structures expose their data and have no meaningful functions.

-- uncle bob

En français¶

On veut avoir un paquet de méthodes toutes lié entre elles qui gère les mêmes données.

C'était exactement ce que nous avons fait avec la Date¶

let date = new Date();
      ^     ^   ^
      3     1   2
  1. Un mot réservé qui créer une instance à partir d'une classe
  2. Le nom de la classe.
  3. L'instance de la classe

Et si on y pense...¶

let date = new Date();
date.setFullYear(2024);
console.log("L'époch time dans 1 an sera exactement " + date.getTime() + " ms");

Ici, l'instance date "cache" plein de choses

  • le fuseau horaire
  • l'heure
  • la date

C'est quoi une classe?¶

Une classe¶

Une classe représente donc une catégorie d'objets. Elle apparaît aussi comme un moule ou une usine à partir de laquelle il est possible de créer des objets ; c'est en quelque sorte une « boîte à outils » qui permet de fabriquer un objet. On parle alors d'un objet en tant qu'instance d'une classe (création d'un objet ayant les propriétés de la classe).

-- wikipedia

Une classe, est une ensemble de fonction qu'on veut associer à des données que les fonctions partagent entre elles.

Les fonctions d'une classe sont appelées méthodes. Les données de la classes sont nommées attributs.

Liens pédagogiques¶

  • https://youtu.be/RQ3ItXrULBA

  • https://youtu.be/1pYmqDnvTh8

  • https://youtu.be/WAQQ890Zudo

  • https://youtu.be/gABYMZbfGok

Exemple classique 1¶

Exemple classique 1¶

Exemple classique 2¶

Exemple pédagogique pour vrais mâles ♂️¶

C'est quoi un partie de hockey?¶

c'est deux équipes qui jouent l'une contre l'autre et qui "compte" dans le but de leurs adversaire. L'équipe qui compte le plus de but gagne la partie.

-- un expert de hockey annonyme

Didier à fait une classe pour ça...¶

https://didiercrunch.github.io/cours-420-301-ah/

In [3]:
import {HockeyGame} from "https://cdn.jsdelivr.net/gh/didiercrunch/cours-420-301-ah@006.1/modules-examples/mod.js";

let hockeyGame = new HockeyGame();
hockeyGame.awayTeamScores();
hockeyGame.homeTeamScores();
hockeyGame.homeTeamScores();
hockeyGame.awayTeamScores();
hockeyGame.homeTeamScores();
console.log(`Le gagnant de la partie est: ${hockeyGame.winner()}`)
Out[3]:
Le gagnant de la partie est: home

Une classe, c'est comme un petit language¶

  • Les données sont caché (ou devrait l'être)
  • Nous avons des méthodes pour intérragir avec la donnée

Les constructeurs¶

C'est quoi créer un objet?¶

En gros:¶

  • C'est de créer un petit sac de données
  • Ça attache les méthodes au sac
  • (et c'est pour ça que nous avons besoin du mot new)

Mais: le sac n'a pas besoin d'être vide!¶

  • Un constructeur peu prendre n'importe quoi en argument

C'est quoi un joueur de hockey?¶

C'est quelqu'un avec un prénom et un nom de famille qui est né à une date précise

-- un expert de hockey annonyme

Didier à fait une autre classe pour ça...¶

https://didiercrunch.github.io/cours-420-301-ah/

In [6]:
import {HockeyPlayer} from "https://cdn.jsdelivr.net/gh/didiercrunch/cours-420-301-ah@006.1/modules-examples/mod.js";

let player = new HockeyPlayer("didier", "amyot", new Date(1983, 9, 9))
console.log(player.currentAge());
Out[6]:
40

Un constructeur¶

La méthode constructor est une méthode qui est utilisée pour créer et initialiser un objet lorsqu'on utilise le mot clé class.

let player = new HockeyPlayer("didier", "amyot", new Date(1983, 9, 9))
              ^        ^                      ^
              1        2                      3
  1. mot clé new
  2. Méthode "spéciale" qui créer l'instance: le constructeur
  3. Les arguments du constructeur

Exercices¶

In [ ]: